import { BasicColumn, FormSchema } from '/@/components/Table';
import { rules } from '/@/utils/helper/validator';
import { filterDictTextByCache } from '/@/utils/dict/JDictSelectUtil';
import { render } from '/@/utils/common/renderUtils';

export const columns: BasicColumn[] = [
  {
    title: '应用名称',
    dataIndex: 'appName',
    width: 80,
  },
  {
    title: '应用链接',
    dataIndex: 'appLink',
    width: 150,
  },
  {
    title: '应用图标URL',
    dataIndex: 'appIconUrl',
    width: 120,
    customRender: render.renderAppIconUrl,
  },
  {
    title: '是否启用',
    dataIndex: 'isEnabled',
    width: 90,
    customRender: function ({ text }) {
      if (text == '1') {
        return '启用';
      } else {
        return '停用';
      }
    },
  },
  // {
  //   title: '配置token',
  //   dataIndex: 'isTokenConfigured',
  //   width: 90,
  //   customRender: function ({ text }) {
  //     if (text == '1') {
  //       return '配置';
  //     } else {
  //       return '不配置';
  //     }
  //   },
  // },
  // {
  //   title: 'tokenApi',
  //   dataIndex: 'tokenApi',
  //   width: 150,
  // },
  // {
  //   title: '用户配置信息',
  //   dataIndex: 'userConfigInfo',
  //   width: 150,
  // },
  // {
  //   title: '请求方式',
  //   dataIndex: 'requestMethod',
  //   width: 150,
  // },
];

export const searchFormSchema: FormSchema[] = [
  {
    label: '应用名称',
    field: 'appName',
    component: 'JInput',
  },
  // {
  //   label: '配置token',
  //   field: 'isTokenConfigured',
  //   component: 'JDictSelectTag',
  //   componentProps: {
  //     options: [
  //       {
  //         label: '配置',
  //         value: '1',
  //         key: '1',
  //       },
  //       {
  //         label: '不配置',
  //         value: '0',
  //         key: '0',
  //       },
  //     ],
  //   },
  // },
  {
    label: '是否启用',
    field: 'isEnabled',
    component: 'JDictSelectTag',
    componentProps: {
      options: [
        {
          label: '启用',
          value: '1',
          key: '1',
        },
        {
          label: '停用',
          value: '0',
          key: '0',
        },
      ],
    },
  },
];

export const formSchemas: FormSchema[] = [
  {
    label: 'ID',
    field: 'id',
    component: 'Input',
    show: false,
  },
  {
    label: '应用名称',
    field: 'appName',
    component: 'Input',
    required: true,
  },
  {
    label: '应用链接',
    field: 'appLink',
    component: 'Input',
    required: true,
  },
  {
    label: '应用图标URL',
    field: 'appIconUrl',
    component: 'JImageUpload',
    componentProps: {
      fileMax: 1,
    },
    required: true,
  },
  {
    label: '是否启用',
    field: 'isEnabled',
    component: 'JSwitch',
    componentProps: {
      options: [1, 0],
    },
    required: true,
  },
  {
    label: '配置token',
    field: 'isTokenConfigured',
    component: 'JSwitch',
    componentProps: {
      options: [1, 0],
    },
    required: true,
  },
  {
    label: 'tokenApi',
    field: 'tokenApi',
    component: 'Input',
    ifShow: ({ values }) => {
      return [1].includes(values.isTokenConfigured);
    },
    required: true,
  },
  {
    label: '请求方式',
    field: 'requestMethod',
    component: 'JDictSelectTag',
    componentProps: {
      options: [
        {
          label: 'get',
          value: 'get',
          key: '1',
        },
        {
          label: 'post',
          value: 'post',
          key: '0',
        },
      ],
    },
    ifShow: ({ values }) => {
      return [1].includes(values.isTokenConfigured);
    },
    required: true,
  },
  {
    label: '用户配置信息',
    field: 'userConfigInfo',
    component: 'InputTextArea',
    ifShow: ({ values }) => {
      return [1].includes(values.isTokenConfigured);
    },
    // ifShow: ({ values }) => {
    //   return ['post'].includes(values.requestMethod);
    // },
    required: true,
  },
  // {
  //   label: '密码',
  //   field: 'password',
  //   component: 'Input',
  //   ifShow: ({ values }) => {
  //     return ['post'].includes(values.requestMethod);
  //   },
  //   required: false,
  // },
  // {
  //   label: 'code',
  //   field: 'code',
  //   component: 'Input',
  //   ifShow: ({ values }) => {
  //     return ['post'].includes(values.requestMethod);
  //   },
  //   required: false,
  // },
  // {
  //   label: 'uuid',
  //   field: 'uuid',
  //   component: 'Input',
  //   ifShow: ({ values }) => {
  //     return ['post'].includes(values.requestMethod);
  //   },
  //   required: false,
  // },
  {
    label: 'tokenKey',
    field: 'tokenKey',
    component: 'Input',
    ifShow: ({ values }) => {
      return [1].includes(values.isTokenConfigured);
    },
    required: true,
  },
  {
    label: 'token过期时间(s)',
    field: 'tokenExpireTime',
    component: 'Input',
    ifShow: ({ values }) => {
      return [1].includes(values.isTokenConfigured);
    },
    required: false,
  },
  // {
  //   label: '模板类型',
  //   field: 'templateType',
  //   component: 'JDictSelectTag',
  //   componentProps: {
  //     dictCode: 'msgType',
  //     placeholder: '请选择模板类型',
  //   },
  //   required: true,
  // },
  {
    label: '备注',
    field: 'remark',
    component: 'InputTextArea',
  },

  // {
  //   label: '模板内容',
  //   field: 'templateContent',
  //   component: 'JEditor',
  //   ifShow: ({ values }) => {
  //     return ['2', '4'].includes(values.templateType);
  //   },
  // },
  // {
  //   label: '模板内容',
  //   field: 'templateContent',
  //   component: 'JMarkdownEditor',
  //   ifShow: ({ values }) => {
  //     return ['5'].includes(values.templateType);
  //   },
  // },
];

export const sendTestFormSchemas: FormSchema[] = [
  {
    label: '应用名称',
    field: 'appName',
    component: 'Input',
    componentProps: { disabled: true },
  },
  {
    label: '模板内容',
    field: 'templateContent',
    component: 'InputTextArea',
    componentProps: { disabled: true, rows: 5 },
  },
  {
    label: '测试数据',
    field: 'testData',
    component: 'InputTextArea',
    required: true,
    helpMessage: 'JSON数据',
    defaultValue: '{}',
    componentProps: {
      placeholder: '请输入JSON格式测试数据',
      rows: 5,
    },
  },
  {
    label: '消息类型',
    field: 'msgType',
    component: 'JDictSelectTag',
    required: true,
    defaultValue: 'system',
    componentProps: { dictCode: 'messageType', type: 'radio' },
  },
  {
    label: '消息接收方',
    field: 'receiver',
    required: true,
    component: 'JSelectUser',
    componentProps: {
      labelKey: 'username',
      rowKey: 'username',
    },
  },
];
